/////////////////////////////////////////功能///////////////////////////////////
//路径使用
var path=require('path');
//数据解析
var bodyParser=require('body-parser');

var parseurl=require('parseurl');
/////////////////////////////////////////////////////////////////////////////////

//服务器端
var express=require('express');
var app=express();

// 文件读取
var fs = require("fs");

//////////////////////////////////////////////是否可以考虑单独成件/////////////////////////////////////

var uuid=require('node-uuid');
//socket.io
var http = require('http').Server(app);



////////////////////////////////////////////////////////////////////////////////////////////////////////////
// var MongoClient=require('mongodb').MongoClient;sss
// var config=require('./config.js');
// var mongodbHost=config.getMongodbHost();
// var mongodbDb=config.getMongodbDb();
// var mongodbUrl="mongodb://"+mongodbHost+"/"+mongodbDb;

//html页面
var ejs=require('ejs');
app.set('views',path.join(__dirname,'/public'));
// app.engine('.html',ejs.__express);
app.engine('.html',ejs.renderFile);
app.set('view engine','html');


//uuid
var uuid=require('node-uuid');
//session
try{
    // var session=require('express-session');
    // var RedisStore=require('connect-redis')(session);
    // var config=require('./config/config.js')(),rURL=config.rURL,rPORT=config.rPORT;
    // app.use(session({
    //   store:new RedisStore({
    //     host:rURL,
    //     port:rPORT,
    //     // ttl:360,
    //     pass:'$2a$10$YX/.kw5DIdSTlUxiNoqwWuKDa.Nhr9GJQNH9jPjuL008tWwaVoX7O'//'smartGym'(后期调整)
    //   }),
    //   secret:'$2a$10$YX/.kw5DIdSTlUxiNoqwWuKDa.Nhr9GJQNH9jPjuL008tWwaVoX7O',//'smartGym---bcrypt-nodejs'
    //   resave: false,
    //   saveUninitialized: true,
    //   genid:function(req){
    //     return uuid.v1();
    //   }
    // }));
}
catch(e){
    console.log(e);
}


// //////////////////////日志/////////////////////////////////////////
//常规httpConsole日志，入口文件是用的
var httpConsole=require('morgan');
app.use(httpConsole('dev'));

// var app.locals.user='huang';//这里是测试locals,结果前面有个app

//文件http记录错误logger


// //调试logger
// var consoleLogger=Logger.consoleLogger;  //需要则用
// //文件记录错误logger
// var warnLogger=Logger.warnLogger;        //需要则用

// //日志 参考：http://blog.fens.me/nodejs-log4js/ 和
// //http://blog.csdn.net/linminqin/article/details/17188259 和
// //http://blog.csdn.net/heiantianshi1/article/details/43984601
// /////////////////////////////////////////////////////////////////////


// //定义数据解释器
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
//定义cookie解释器
// app.use(cookieParser());
app.use(express.static(path.join(__dirname,'/public')));//放置的位置值得练习
// //app.use()



// ///////////////////////////解决跨域问题 /////////////////////////////////////////////////
app.use(function(req, res, next) {
    var origin = (req.headers.origin || "*");
    console.log('origin:' + origin);
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    if ("OPTIONS" == req.method) {
        res.send(200);
    } else {
        next();
    }
});
// /////////////////////////////////////////////////////////////////////////////////////////////



// //此处需要加入容错机制
var domain = require('domain');
app.use(function(req, res, next) {
    var d = domain.create();
    //监听domain的错误事件
    d.on('error', function(err) {
        //    tools.errLogger(err, 'app ', logger);
        res.statusCode = 500;
        res.json({
            code: 500,
            codeInfo: '服务器异常'
        });
        //d.dispose();
    });
    d.add(req);
    d.run(next);
    d.add(res);
});



//  //未处理的异常
process.on('uncaughtException', function(err) {
    // logger.error('uncaughtException ' + err);
});





//路由
try{
    var routes=require('./app/routes/aaaaaaaaIndex.js');
    app.use('/',routes);}
catch(e){console.error(e)};

// 404
app.get('*', function(req, res) {
    res.render('404',function(err,html){
        res.send(html);
    });
    // var url = req.url;
    // if (url.indexOf('aimweb/') > 0) {
    //     require('./controller/aimweb/404')(req, res, app);
    // } else {
    //     res.send(JSON.stringify({
    //         code: '404',
    //         codeInfo: '此页面不存在'
    //     }));
    // }
});


//端口监听


http.listen("4443",function(){
    console.log('welcome');
    // console.log(req.sessionID);
});


